//-------------------------------------------------------------------
//	Copyright (c) 2010-2012  Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_WINDOWS_KEY_CODES_H
#define _UX_WINDOWS_KEY_CODES_H

#ifdef PLATFORM_WINDOWS

#include "../../Enums/Enums.h"

namespace Engine
{

// ----------------------- Windows Key Codes --------------------- //

namespace e_key
{
	enum	type	: uint16
	{
		_UNKNOWN		=   0,

		MOUSE1			=   1,		//	MOUSE 1
		MOUSE2			=   2,		//	MOUSE 2
		MOUSE3			=   3,		//	MOUSE 3
		MOUSE4			=   4,		//	MOUSE 4
		MOUSE5			=   5,		//	MOUSE 5

		MLEFT			= MOUSE1,
		MRIGHT			= MOUSE2,
		MMIDDLE			= MOUSE3,
		MX1				= MOUSE4,
		MX2				= MOUSE5,

		MWHEEL_UP		=   6,		//	MOUSE WHEEL UP
		MWHEEL_DOWN		=   7,		//	MOUSE WHEEL DOWN

		_KEY_BEGIN		=   8,

		BACKSPACE		=   8,		//	BACK SPACE
		TAB				=   9,		//	TAB

		CLEAR			=  12,		//	CLEAR
		RETURN			=  13,		//	ENTER

		LSHIFT			=  16,		//	LEFT SHIT
		LCONTROL		=  17,		//	LEFT CONTROL
		LALT			=  18,		//	LEFT ALT
		PAUSE			=  19,		//	PAUSE BREAK
		CAPSLOCK		=  20,		//	CAPS LOCK

		ESCAPE			=  27,		//	ESC

		SPACE			=  32,		//	SPACE
		NUMPADPGUP		=  33,		//	NUMPAD PG UP
		NUMPADPGDN		=  34,		//	NUMPAD PG DW
		NUMPADEND		=  35,		//	NUMPAD END
		NUMPADHOME		=  36,		//	NUMPAD HOME

		NUMPADLEFT		=  37,		//	NUMPAD LEFT
		NUMPADUP		=  38,		//	NUMPAD UP
		NUMPADRIGHT		=  39,		//	NUMPAD RIGHT
		NUMPADDOWN		=  40,		//	NUMPAD DOWN

		SELECT			=  41,		//	SELECT
		PRINT			=  42,		//	PRINT
		EXECUTE			=  43,		//	EXECUTE
		NUMPADINSERT	=  45,		//	NUMPAD INSERT
		NUMPADDELETE	=  46,		//	NUMPAD DELETE
		HELP			=  47,		//	HELP

		_0				=  48,		//	0
		_1				=  49,		//	1
		_2				=  50,		//	2
		_3				=  51,		//	3
		_4				=  52,		//	4
		_5				=  53,		//	5
		_6				=  54,		//	6
		_7				=  55,		//	7
		_8				=  56,		//	8
		_9				=  57,		//	9

		A				=  65,		//	A
		B				=  66,		//	B
		C				=  67,		//	C
		D				=  68,		//	D
		E				=  69,		//	E
		F				=  70,		//	F
		G				=  71,		//	G
		H				=  72,		//	H
		I				=  73,		//	I
		J				=  74,		//	J
		K				=  75,		//	K
		L				=  76,		//	L
		M				=  77,		//	M
		N				=  78,		//	N
		O				=  79,		//	O
		P				=  80,		//	P
		Q				=  81,		//	Q
		R				=  82,		//	R
		S				=  83,		//	S
		T				=  84,		//	T
		U				=  85,		//	U
		V				=  86,		//	V
		W				=  87,		//	W
		X				=  88,		//	X
		Y				=  89,		//	Y
		Z				=  90,		//	Z

		RWIN			=  92,		//	RWIN
		APPS			=  93,		//	APPS

		NUMPAD0			=  96,		//	0	// NUMPAD INSERT
		NUMPAD1			=  97,		//	1	// NUMPAD END
		NUMPAD2			=  98,		//	2	// NUMPAD DOWN
		NUMPAD3			=  99,		//	3	// NUMPAD PG DW
		NUMPAD4			= 100,		//	4	// NUMPAD LEFT
		NUMPAD5			= 101,		//	5	// CLEAR
		NUMPAD6			= 102,		//	6	// NUMPAD RIGHT
		NUMPAD7			= 103,		//	7	// NUMPAD HOME
		NUMPAD8			= 104,		//	8	// NUMPAD UP
		NUMPAD9			= 105,		//	9	// NUMPAD PG UP
		NUMPADSTAR		= 106,		//	* 
		NUMPADPLUS		= 107,		//	+ 
		NUMPADSEPARATOR	= 108,		//	SEPARATOR
		NUMPADMINUS		= 109,		//	- 
		NUMPADPERIOD	= 110,		//	.	// NUMPAD DELETE

		F1				= 112,		//	F1
		F2				= 113,		//	F2
		F3				= 114,		//	F3
		F4				= 115,		//	F4
		F5				= 116,		//	F5
		F6				= 117,		//	F6
		F7				= 118,		//	F7
		F8				= 119,		//	F8
		F9				= 120,		//	F9
		F10				= 121,		//	F10
		F11				= 122,		//	F11
		F12				= 123,		//	F12
		F13				= 124,		//	F13
		F14				= 125,		//	F14
		F15				= 126,		//	F15
		F16				= 127,		//	F16
		F17				= 128,		//	F17
		F18				= 129,		//	F18
		F19				= 130,		//	F19
		F20				= 131,		//	F20
		F21				= 132,		//	F21
		F22				= 133,		//	F22
		F23				= 134,		//	F23
		F24				= 135,		//	F24

		NUMLOCK			= 144,		//	NUM LOCK
		SCROLL			= 145,		//	SCROLL LOCK 

		LMENU			= 164,		//	LEFT MENU
		RMENU			= 165,		//	RIGHT MENU

		SEMICOLON		= 186,		//	;
		PLUS			= 187,		//	+ 
		COMMA			= 188,		//	, 
		MINUS			= 189,		//	- 

		PERIOD			= 190,		//	.
		SLASH			= 191,		//	/ 
		GRAVE			= 192,		//	` 

		LBRACKET		= 219,		//	[ 
		BACKSLASH		= 220,		//	\ 
		RBRACKET		= 221,		//	] 
		APOSTROPHE		= 222,		//	' 

		right_offset	= 222,
		
		NUMPADENTER		= 235,		//	NUMPAD ENTER

		RSHIFT			= 238,		//	RIGHT SHIT
		RCONTROL		= 239,		//	RIGHT CONTROL
		RALT			= 240,		//	RIGHT ALT
		
		PGUP			= 255,		//	PG UP
		PGDN			= 256,		//	PG DW
		END				= 257,		//	END
		HOME			= 258,		//	HOME

		LEFT			= 259,		//	LEFT
		UP				= 260,		//	UP
		RIGHT			= 261,		//	RIGHT
		DOWN			= 262,		//	DOWN
		
		SYSRQ			= 266,		//	SYS RQ (PRT SCR)
		INSERT			= 267,		//	INSERT
		DELETE			= 268,		//	DELETE
		LWIN			= 313,		//	LEFT WIN
		RAPPS			= 315,		//	RIGHT APPS

		SLEEP			= 317,		//	SLEEP

		NUMPADSLASH		= 333,		//	/ 

		BROWSER_BACK	= 388,		//	BROWSER BACK
		BROWSER_FORWARD	= 389,		//	BROWSER FORWARD
		BROWSER_REFRESH	= 390,		//	BROWSER REFRESH
		BROWSER_STOP	= 391,		//	BROWSER STOP
		BROWSER_SEARCH	= 392,		//	BROWSER SEARCH
		BROWSER_FAVORITES = 393,	//	BROWSER FAVORITES
		BROWSER_HOME	= 394,		//	BROWSER HOME
		
		VOLUME_MUTE		= 395,		//	VOLUME MUTE
		VOLUME_DOWN		= 396,		//	VOLUME DOWN
		VOLUME_UP		= 297,		//	VOLUME UP
		
		MEDIA_NEXT		= 396,		//	MEDIA NEXT TRACK
		MEDIA_PREV		= 399,		//	MEDIA PREV TRACK
		MEDIA_STOP		= 400,		//	MEDIA STOP
		MEDIA_PLAY		= 401,		//	MEDIA PLAY / PAUSE

		LAUNCH_MAIL		= 402,		//	LAUNCH MAIL
		LAUNCH_MEDIA	= 403,		//	LAUNCH MEDIA SELECT
		LAUNCH_APP1		= 404,		//	LAUNCH APPLICATION 1
		LAUNCH_APP2		= 405,		//	LAUNCH APPLICATION 2

		_COUNT			= 444
	};


	static const char	*pNames[_COUNT] =
	{
		"[0]",				// 0
		"Mouse 1",			// 1
		"Mouse 2",			// 2
		"Mouse 3",			// 3
		"Mouse 4",			// 4
		"Mouse 5",			// 5
		"Mouse Wheel Up",	// 6
		"Mouse Wheel Down",	// 7
		"BACKSPACE",		// 8
		"TAB",				// 9
		"[10]",				// 10
		"[11]",				// 11
		"CLEAR",			// 12
		"ENTER",			// 13
		"[14]",				// 14
		"[15]",				// 15
		"LEFT SHIT",		// 16
		"LEFT CONTROL",		// 17
		"LEFT ALT",			// 18
		"PAUSE BREAK",		// 19
		"CAPS LOCK",		// 20
		"[21]",				// 21
		"[22]",				// 22
		"[23]",				// 23
		"[24]",				// 24
		"[25]",				// 25
		"[26]",				// 26
		"ESC",				// 27
		"[28]",				// 28
		"[29]",				// 29
		"[30]",				// 30
		"[31]",				// 31
		"SPACE",			// 32
		"NUM PAGE UP",		// 33
		"NUM PAGE DOWN",	// 34
		"NUM END",			// 35
		"NUM HOME",			// 36
		"NUM LEFT",			// 37
		"NUM UP",			// 38
		"NUM RIGHT",		// 39
		"NUM DOWN",			// 40
		"SELECT",			// 41
		"PRINT",			// 42
		"EXECUTE",			// 43
		"SYS RQ",			// 44
		"NUM INSERT",		// 45
		"NUM DELETE",		// 46
		"HELP",				// 47
		"0",				// 48
		"1",				// 49
		"2",				// 50
		"3",				// 51
		"4",				// 52
		"5",				// 53
		"6",				// 54
		"7",				// 55
		"8",				// 56
		"9",				// 57
		"[58]",				// 58
		"[59]",				// 59
		"[60]",				// 60
		"[61]",				// 61
		"[62]",				// 62
		"[63]",				// 63
		"[64]",				// 64
		"A",				// 65
		"B",				// 66
		"C",				// 67
		"D",				// 68
		"E",				// 69
		"F",				// 70
		"G",				// 71
		"H",				// 72
		"I",				// 73
		"J",				// 74
		"K",				// 75
		"L",				// 76
		"M",				// 77
		"N",				// 78
		"O",				// 79
		"P",				// 80
		"Q",				// 81
		"R",				// 82
		"S",				// 83
		"T",				// 84
		"U",				// 85
		"V",				// 86
		"W",				// 87
		"X",				// 88
		"Y",				// 89
		"Z",				// 90
		"[91]",				// 91
		"RIGHT WIN",		// 92
		"APPS",				// 93
		"[94]",				// 94
		"[95]",				// 95
		"NUM 0",			// 96
		"NUM 1",			// 97
		"NUM 2",			// 98
		"NUM 3",			// 99
		"NUM 4",			// 100
		"NUM 5",			// 101
		"NUM 6",			// 102
		"NUM 7",			// 103
		"NUM 8",			// 104
		"NUM 9",			// 105
		"NUM *",			// 106
		"NUM +",			// 107
		"NUM SEPARATOR",	// 108
		"NUM -",				// 109 
		"NUM .",			// 110
		"[111]",			// 111
		"F1",				// 112
		"F2",				// 113
		"F3",				// 114
		"F4",				// 115
		"F5",				// 116
		"F6",				// 117
		"F7",				// 118
		"F8",				// 119
		"F9",				// 120
		"F10",				// 121
		"F11",				// 122
		"F12",				// 123
		"F13",				// 124
		"F14",				// 125
		"F15",				// 126
		"F16",				// 127
		"F17",				// 128
		"F18",				// 129
		"F19",				// 130
		"F20",				// 131
		"F21",				// 132
		"F22",				// 133
		"F23",				// 134
		"F24",				// 135
		"[136]",			// 136
		"[137]",			// 137
		"[138]",			// 138
		"[139]",			// 139
		"[140]",			// 140
		"[141]",			// 141
		"[142]",			// 142
		"[143]",			// 143
		"NUM LOCK",			// 144
		"SCROLL LOCK",		// 145
		"[146]",			// 146
		"[147]",			// 147
		"[148]",			// 148
		"[149]",			// 149
		"[150]",			// 150
		"[151]",			// 151
		"[152]",			// 152
		"[153]",			// 153
		"[154]",			// 154
		"[155]",			// 155
		"[156]",			// 156
		"[157]",			// 157
		"[158]",			// 158
		"[159]",			// 159
		"[160]",			// 160
		"[161]",			// 161
		"[162]",			// 162
		"[163]",			// 163
		"LEFT MENU",		// 164
		"RIGHT MENU",		// 165
		"[166]",			// 166
		"[167]",			// 167
		"[168]",			// 168
		"[169]",			// 169
		"[170]",			// 170
		"[171]",			// 171
		"[172]",			// 172
		"[173]",			// 173
		"[174]",			// 174
		"[175]",			// 175
		"[176]",			// 176
		"[177]",			// 177
		"[178]",			// 178
		"[179]",			// 179
		"[180]",			// 180
		"[181]",			// 181
		"[182]",			// 182
		"[183]",			// 183
		"[184]",			// 184
		"[185]",			// 185
		";",				// 186
		"+",				// 187
		",",				// 188
		"-",					// 189
		".",				// 190
		"/",				// 191
		"`",				// 192
		"[193]",			// 193
		"[194]",			// 194
		"[195]",			// 195
		"[196]",			// 196
		"[197]",			// 197
		"[198]",			// 198
		"[199]",			// 199
		"[200]",			// 200
		"[201]",			// 201
		"[202]",			// 202
		"[203]",			// 203
		"[204]",			// 204
		"[205]",			// 205
		"[206]",			// 206
		"[207]",			// 207
		"[208]",			// 208
		"[209]",			// 209
		"[210]",			// 210
		"[211]",			// 211
		"[212]",			// 212
		"[213]",			// 213
		"[214]",			// 214
		"[215]",			// 215
		"[216]",			// 216
		"[217]",			// 217
		"[218]",			// 218
		"[",				// 219
		"\\",				// 220
		"]",				// 221
		"'",				// 222
		"[223]",			// 223
		"[224]",			// 224
		"[225]",			// 225
		"[226]",			// 226
		"[227]",			// 227
		"[228]",			// 228
		"[229]",			// 229
		"[230]",			// 230
		"[231]",			// 231
		"[232]",			// 232
		"[233]",			// 233
		"[234]",			// 234
		"NUMPAD ENTER",		// 235
		"[236]",			// 236
		"[237]",			// 237
		"RIGHT SHIT",		// 238
		"RIGHT CONTROL",	// 239
		"RIGHT ALT",		// 240
		"[241]",			// 241
		"[242]",			// 242
		"[243]",			// 243
		"[244]",			// 244
		"[245]",			// 245
		"[246]",			// 246
		"[247]",			// 247
		"[248]",			// 248
		"[249]",			// 249
		"[250]",			// 250
		"[251]",			// 251
		"[252]",			// 252
		"[253]",			// 253
		"[254]",			// 254
		"PAGE UP",			// 255
		"PAGE DOWN",		// 256
		"END",				// 257
		"HOME",				// 258
		"LEFT",				// 259
		"UP",				// 260
		"RIGHT",			// 261
		"DOWN",				// 262
		"[263]",			// 263
		"[264]",			// 264
		"[265]",			// 265
		"SYS RQ",			// 266
		"INSERT",			// 267
		"DELETE",			// 268
		"[269]",			// 269
		"[270]",			// 270
		"[271]",			// 271
		"[272]",			// 272
		"[273]",			// 273
		"[274]",			// 274
		"[275]",			// 275
		"[276]",			// 276
		"[277]",			// 277
		"[278]",			// 278
		"[279]",			// 279
		"[280]",			// 280
		"[281]",			// 281
		"[282]",			// 282
		"[283]",			// 283
		"[284]",			// 284
		"[285]",			// 285
		"[286]",			// 286
		"[287]",			// 287
		"[288]",			// 288
		"[289]",			// 289
		"[290]",			// 290
		"[291]",			// 291
		"[292]",			// 292
		"[293]",			// 293
		"[294]",			// 294
		"[295]",			// 295
		"[296]",			// 296
		"[297]",			// 297
		"[298]",			// 298
		"[299]",			// 299
		"[300]",			// 300
		"[301]",			// 301
		"[302]",			// 302
		"[303]",			// 303
		"[304]",			// 304
		"[305]",			// 305
		"[306]",			// 306
		"[307]",			// 307
		"[308]",			// 308
		"[309]",			// 309
		"[310]",			// 310
		"[311]",			// 311
		"[312]",			// 312
		"LEFT WIN",			// 313
		"[314]",			// 314
		"RIGHT APPS",		// 315
		"[316]",			// 316
		"SLEEP",			// 317
		"[318]",			// 318
		"[319]",			// 319
		"[320]",			// 320
		"[321]",			// 321
		"[322]",			// 322
		"[323]",			// 323
		"[324]",			// 324
		"[325]",			// 325
		"[326]",			// 326
		"[327]",			// 327
		"[328]",			// 328
		"[329]",			// 329
		"[330]",			// 330
		"[331]",			// 331
		"[332]",			// 332
		"NUM /",			// 333
		"[334]",			// 334
		"[335]",			// 335
		"[336]",			// 336
		"[337]",			// 337
		"[338]",			// 338
		"[339]",			// 339
		"[340]",			// 340
		"[341]",			// 341
		"[342]",			// 342
		"[343]",			// 343
		"[344]",			// 344
		"[345]",			// 345
		"[346]",			// 346
		"[347]",			// 347
		"[348]",			// 348
		"[349]",			// 349
		"[350]",			// 350
		"[351]",			// 351
		"[352]",			// 352
		"[353]",			// 353
		"[354]",			// 354
		"[355]",			// 355
		"[356]",			// 356
		"[357]",			// 357
		"[358]",			// 358
		"[359]",			// 359
		"[360]",			// 360
		"[361]",			// 361
		"[362]",			// 362
		"[363]",			// 363
		"[364]",			// 364
		"[365]",			// 365
		"[366]",			// 366
		"[367]",			// 367
		"[368]",			// 368
		"[369]",			// 369
		"[370]",			// 370
		"[371]",			// 371
		"[372]",			// 372
		"[373]",			// 373
		"[374]",			// 374
		"[375]",			// 375
		"[376]",			// 376
		"[377]",			// 377
		"[378]",			// 378
		"[379]",			// 379
		"[380]",			// 380
		"[381]",			// 381
		"[382]",			// 382
		"[383]",			// 383
		"[384]",			// 384
		"[385]",			// 385
		"[386]",			// 386
		"[387]",			// 387
		"BROWSER BACK",		// 388
		"BROWSER FORWARD",	// 389
		"BROWSER REFRESH",	// 390
		"BROWSER STOP",		// 391
		"BROWSER SEARCH",	// 392
		"BROWSER FAVORITES",// 393
		"BROWSER HOME",		// 394
		"VOLUME MUTE",		// 395
		"VOLUME DOWN",		// 396
		"VOLUME UP",		// 397
		"MEDIA NEXT",		// 398
		"MEDIA PREV",		// 399
		"MEDIA STOP",		// 400
		"MEDIA PLAY/PAUSE",	// 401
		"LAUNCH MAIL",		// 402
		"LAUNCH MEDIA",		// 403
		"LAUNCH APP1",		// 404
		"LAUNCH APP2",		// 405
		"[406]",			// 406
		"[407]",			// 407
		"[408]",			// 408
		"[409]",			// 409
		"[410]",			// 410
		"[411]",			// 411
		"[412]",			// 412
		"[413]",			// 413
		"[414]",			// 414
		"[415]",			// 415
		"[416]",			// 416
		"[417]",			// 417
		"[418]",			// 418
		"[419]",			// 419
		"[420]",			// 420
		"[421]",			// 421
		"[422]",			// 422
		"[423]",			// 423
		"[424]",			// 424
		"[425]",			// 425
		"[426]",			// 426
		"[427]",			// 427
		"[428]",			// 428
		"[429]",			// 429
		"[430]",			// 430
		"[431]",			// 431
		"[432]",			// 432
		"[433]",			// 433
		"[434]",			// 434
		"[435]",			// 435
		"[436]",			// 436
		"[437]",			// 437
		"[438]",			// 438
		"[439]",			// 439
		"[440]",			// 440
		"[441]",			// 441
		"[442]",			// 442
		"[443]"				// 443
	};


	static const type	aKeyIndices[] =
	{
		_UNKNOWN,

		MOUSE1,				//	MOUSE 1
		MOUSE2,				//	MOUSE 2
		MOUSE3,				//	MOUSE 3
		MOUSE4,				//	MOUSE 4
		MOUSE5,				//	MOUSE 5

		MWHEEL_UP,			//	MOUSE WHEEL UP
		MWHEEL_DOWN,		//	MOUSE WHEEL DOWN

		BACKSPACE,			//	BACK SPACE
		TAB,				//	TAB

		CLEAR,				//	CLEAR
		RETURN,				//	ENTER

		LSHIFT,				//	LEFT SHIT
		LCONTROL,			//	LEFT CONTROL
		LALT,				//	LEFT ALT
		PAUSE,				//	PAUSE BREAK
		CAPSLOCK,			//	CAPS LOCK

		ESCAPE,				//	ESC

		SPACE,				//	SPACE
		NUMPADPGUP,			//	NUMPAD PG UP
		NUMPADPGDN,			//	NUMPAD PG DW
		NUMPADEND,			//	NUMPAD END
		NUMPADHOME,			//	NUMPAD HOME

		NUMPADLEFT,			//	NUMPAD LEFT
		NUMPADUP,			//	NUMPAD UP
		NUMPADRIGHT,		//	NUMPAD RIGHT
		NUMPADDOWN,			//	NUMPAD DOWN

		SELECT,				//	SELECT
		PRINT,				//	PRINT
		EXECUTE,			//	EXECUTE
		NUMPADINSERT,		//	NUMPAD INSERT
		NUMPADDELETE,		//	NUMPAD DELETE
		HELP,				//	HELP

		_0,					//	0
		_1,					//	1
		_2,					//	2
		_3,					//	3
		_4,					//	4
		_5,					//	5
		_6,					//	6
		_7,					//	7
		_8,					//	8
		_9,					//	9

		A,					//	A
		B,					//	B
		C,					//	C
		D,					//	D
		E,					//	E
		F,					//	F
		G,					//	G
		H,					//	H
		I,					//	I
		J,					//	J
		K,					//	K
		L,					//	L
		M,					//	M
		N,					//	N
		O,					//	O
		P,					//	P
		Q,					//	Q
		R,					//	R
		S,					//	S
		T,					//	T
		U,					//	U
		V,					//	V
		W,					//	W
		X,					//	X
		Y,					//	Y
		Z,					//	Z

		RWIN,				//	RWIN
		APPS,				//	APPS

		NUMPAD0,			//	0	// NUMPAD INSERT
		NUMPAD1,			//	1	// NUMPAD END
		NUMPAD2,			//	2	// NUMPAD DOWN
		NUMPAD3,			//	3	// NUMPAD PG DW
		NUMPAD4,			//	4	// NUMPAD LEFT
		NUMPAD5,			//	5	// CLEAR
		NUMPAD6,			//	6	// NUMPAD RIGHT
		NUMPAD7,			//	7	// NUMPAD HOME
		NUMPAD8,			//	8	// NUMPAD UP
		NUMPAD9,			//	9	// NUMPAD PG UP
		NUMPADSTAR,			//	* 
		NUMPADPLUS,			//	+ 
		NUMPADSEPARATOR,	//	SEPARATOR
		NUMPADMINUS,		//	- 
		NUMPADPERIOD,		//	.	// NUMPAD DELETE

		F1,					//	F1
		F2,					//	F2
		F3,					//	F3
		F4,					//	F4
		F5,					//	F5
		F6,					//	F6
		F7,					//	F7
		F8,					//	F8
		F9,					//	F9
		F10,				//	F10
		F11,				//	F11
		F12,				//	F12
		F13,				//	F13
		F14,				//	F14
		F15,				//	F15
		F16,				//	F16
		F17,				//	F17
		F18,				//	F18
		F19,				//	F19
		F20,				//	F20
		F21,				//	F21
		F22,				//	F22
		F23,				//	F23
		F24,				//	F24

		NUMLOCK,			//	NUM LOCK
		SCROLL,				//	SCROLL LOCK 

		LMENU,				//	LEFT MENU
		RMENU,				//	RIGHT MENU

		SEMICOLON,			//	;
		PLUS,				//	+ 
		COMMA,				//	, 
		MINUS,				//	- 

		PERIOD,				//	.
		SLASH,				//	/ 
		GRAVE,				//	` 

		LBRACKET,			//	[ 
		BACKSLASH,			//	\ 
		RBRACKET,			//	] 
		APOSTROPHE,			//	' 
		
		NUMPADENTER,		//	NUMPAD ENTER

		RSHIFT,				//	RIGHT SHIT
		RCONTROL,			//	RIGHT CONTROL
		RALT,				//	RIGHT ALT
		
		PGUP,				//	PG UP
		PGDN,				//	PG DW
		END,				//	END
		HOME,				//	HOME

		LEFT,				//	LEFT
		UP,					//	UP
		RIGHT,				//	RIGHT
		DOWN,				//	DOWN
		
		SYSRQ,				//	SYS RG	(PRT SCR)
		INSERT,				//	INSERT
		DELETE,				//	DELETE
		LWIN,				//	LWIN
		RAPPS,				//	RIGHT APPS
		
		SLEEP,				//	SLEEP

		NUMPADSLASH,		//	/ 

		BROWSER_BACK,		//	BROWSER BACK
		BROWSER_FORWARD,	//	BROWSER FORWARD
		BROWSER_REFRESH,	//	BROWSER REFRESH
		BROWSER_STOP,		//	BROWSER STOP
		BROWSER_SEARCH,		//	BROWSER SEARCH
		BROWSER_FAVORITES,	//	BROWSER FAVORITES
		BROWSER_HOME,		//	BROWSER HOME
		
		VOLUME_MUTE,		//	VOLUME MUTE
		VOLUME_DOWN,		//	VOLUME DOWN
		VOLUME_UP,			//	VOLUME UP
		
		MEDIA_NEXT,			//	MEDIA NEXT TRACK
		MEDIA_PREV,			//	MEDIA PREV TRACK
		MEDIA_STOP,			//	MEDIA STOP
		MEDIA_PLAY,			//	MEDIA PLAY / PAUSE

		LAUNCH_MAIL,		//	LAUNCH MAIL
		LAUNCH_MEDIA,		//	LAUNCH MEDIA SELECT
		LAUNCH_APP1,		//	LAUNCH APPLICATION 1
		LAUNCH_APP2,		//	LAUNCH APPLICATION 2
	};
}
UX_ENUM_ADD_OPERATIONS( e_key::type, uint16 );

//-------------------------------------------------------------------

}	// Engine

#endif	// PLATFORM_WINDOWS

#endif	// _UX_WINDOWS_KEY_CODES_H